NDRE is a red-edge-based vegetation index designed to be more sensitive to leaf chlorophyll
and nitrogen status than classical NDVI, especially in medium to high biomass crops.
It uses a Red Edge band and Near-InfraRed (NIR) reflectance.
1. Scientific Definition
The Normalized Difference Red Edge (NDRE) is a spectral index that
exploits the Red Edge region (transition between red and NIR)
together with Near-InfraRed (NIR) reflectance.
It is particularly sensitive to leaf chlorophyll content and
canopy nitrogen, and less prone to saturation than NDVI in dense crops.
For Sentinel-2, a typical choice is:
NIR = B8 (842 nm), RedEdge = B5 (705 nm).
Typical Interpretation
NDRE Range
Interpretation
< 0.0
Water, clouds, snow, or non-vegetated bright surfaces
0.0 – 0.2
Bare soil, rocks, built-up, or very low chlorophyll / stressed vegetation
0.2 – 0.5
Moderate vegetation with medium chlorophyll levels
> 0.5
Dense, vigorous vegetation with high chlorophyll / nitrogen status
Key Applications
Precision agriculture and fertilizer management (nitrogen/chlorophyll mapping)
Early stress detection in crops before visible change in NDVI
Monitoring high-biomass crops and orchards where NDVI saturates
Yield prediction and temporal analysis of crop vigor
2. Data & Bands for NDRE
Common Sensors & Bands
Sentinel-2 (ESA) – 10 / 20 m
Red Edge: B5 (~705 nm) or B6 (~740 nm)
NIR: B8 (~842 nm) or B8A (~865 nm)
Multispectral drone / camera sensors (Micasense, etc.)
Dedicated Red Edge band + NIR band
Other satellite sensors that provide an explicit Red Edge band
(e.g. some PlanetScope configurations, commercial high-res sensors).
Good Practice
Use surface reflectance products (e.g. COPERNICUS/S2_SR).
Filter by cloud percentage and date range relevant to the crop season.
Keep the same Red Edge band (e.g. B5) across all dates to ensure consistency.
Clip NDRE results to your specific field / AOI before exporting.
Palette Suggestion
A suitable NDRE color palette (low → high chlorophyll):
[ "#440154", "#3b528b", "#21908c", "#5dc963", "#fde725" ]
3. Google Earth Engine Code – NDRE for Any AOI
Steps: open code.earthengine.google.com → New Script → paste the code →
draw your AOI as geometry on the map → click Run.
Then export NDRE as GeoTIFF to Google Drive.
// NDRE for any Area of Interest (AOI) using Sentinel-2 SR
// -------------------------------------------------------
// 1) Go to: https://code.earthengine.google.com
// 2) Click "New Script" and paste this code.
// 3) On the map: draw your AOI (Polygon/Rectangle).
// It will appear as a variable named 'geometry' in the left panel.
// 4) Click "Run" to display NDRE.
// 5) In the Tasks tab, click "Run" to export NDRE to Google Drive.
// -------------------------------------------------------
// 1. Define Area of Interest (AOI)
// -------------------------------------------------------
// Use the geometry you draw on the map:
var roi = geometry; // Make sure a 'geometry' object exists in the left panel
// Center the map on the AOI
Map.centerObject(roi, 11);
// -------------------------------------------------------
// 2. Define time range
// Adjust dates according to your study period
// -------------------------------------------------------
var startDate = '2023-01-01';
var endDate = '2023-12-31';
// -------------------------------------------------------
// 3. Load Sentinel-2 Surface Reflectance collection
// and prepare a homogeneous ImageCollection
// -------------------------------------------------------
var s2 = ee.ImageCollection('COPERNICUS/S2_SR')
.filterBounds(roi)
.filterDate(startDate, endDate)
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
// keep only the bands needed to compute NDRE to avoid band mismatches
.select(['B5', 'B8']); // B5 = Red Edge, B8 = NIR
// Create a median composite and clip to AOI
var image = s2.median().clip(roi);
// -------------------------------------------------------
// 4. Compute NDRE
// -------------------------------------------------------
// NDRE = (NIR - RedEdge) / (NIR + RedEdge)
var ndre = image.normalizedDifference(['B8', 'B5']).rename('NDRE');
// -------------------------------------------------------
// 5. Visualization on the map
// -------------------------------------------------------
var ndreVis = {
min: -1,
max: 1,
palette: [
'#440154', // low (water / no vegetation)
'#3b528b',
'#21908c',
'#5dc963',
'#fde725' // high (dense high-chlorophyll vegetation)
]
};
// Add NDRE layer to the map
Map.addLayer(ndre, ndreVis, 'NDRE (Sentinel-2)', true);
// Optionally, also show a true color composite for context
var s2_rgb = ee.ImageCollection('COPERNICUS/S2_SR')
.filterBounds(roi)
.filterDate(startDate, endDate)
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
.select(['B4','B3','B2']) // RGB
.median()
.clip(roi);
Map.addLayer(s2_rgb, {min:0, max:3000}, 'True Color (RGB)', false);
// -------------------------------------------------------
// 6. Export NDRE as GeoTIFF to Google Drive
// -------------------------------------------------------
Export.image.toDrive({
image: ndre,
description: 'NDRE_Export',
fileNamePrefix: 'NDRE_Export',
region: roi,
scale: 10, // Sentinel-2 native resolution for B8/B5
crs: 'EPSG:4326',
maxPixels: 1e13
});
// End of script